package DTO;

import DAL.Conexao;
import java.util.*;

/**
 * Classe responsável por manter as informações referentes a um jogo.
 *
 * @author (R. Soares)
 * @version (1.0 - 26.04.2010)
 */
public class JogoDTO
{
    // Variáveis de Instância --------------------------------------------------*
    private String _jogador;
    private int _fase;
    private int _escore;
    private int _chancesJogo;
    private ListaMeteoros _listaMeteoros;
    private ArrayList _listaMisseis;
    private SateliteDTO _satelite;
    private ElementoDTO _planeta;
    private ElementoDTO _missil;
    private Conexao _cx;
    private MeteoroDTO _meteoroDTO;
    private String _nivelPartida;
    // Contrutores -------------------------------------------------------------- *
    /**
     * O objeto jogo é inicializado com o Identificador do jogador, a fase, o escore e as
     * chances de jogo.
     */
    public JogoDTO(String jogador, int fase, int escore, int chancesJogo, ListaMeteoros listaMeteoros, String nivel_partida, String partida)
    {
        _jogador = jogador;
        _fase = fase;
        _escore = escore;
        _chancesJogo = chancesJogo;
        _listaMeteoros = listaMeteoros;
        _listaMisseis = new ArrayList();
        _cx = new Conexao();
        _cx.inserirPartidaBD(partida, jogador, escore, fase, 0, nivel_partida, 1);
        _nivelPartida = nivel_partida;
    }

    // Métodos --------------------------------------------------------------------*
    /**
     * Retorna o identificador do jogador
     *
     * @return     jogador : String
     */
    public String getJogador()
    {
        return _jogador;
    }

    /**
     * Retorna a Fase atual do jogo
     *
     * @return     Fase : int
     */
    public int getFase()
    {
        return _fase;
    }

    /**
     * Retorna o Escore atual do Jogo
     *
     * @return     Escore : int
     */
    public int getEscore()
    {
        return _escore;
    }

    /**
     * Retorna as Chances de Jogo atuais.
     *
     * @return     chancesJogo : int
     */
    public int getChancesJogo()
    {
        return _chancesJogo;
    }

    /**
     * Retorna um objeto Satelite.
     *
     * @return  ElementoDTO : satelite
     */
    public SateliteDTO getSatelite()
    {
        return _satelite;
    }

    /**
     * Recebe e um objeto Planeta.
     *
     * @return  ElementoDTO : planeta
     */
    public ElementoDTO getPlaneta()
    {
        return _planeta;
    }


    /**
     * Retorna a lista de meteoros.
     *
     * @return     _listaMeteoros : ListaMeteoros
     */
    public ListaMeteoros getListaMeteoros()
    {
        return _listaMeteoros;
    }

    /**
     * Retorna um objeto missil.
     *
     * @param  ElementoDTO : missil
     */
    public ElementoDTO getMissil()
    {
        return _missil;
    }

   /**
     * Retorna a lista de mísseis.
     *
     * @return   ArrayList : ListaMisseis
     */
    public ArrayList getListaMisseis()
    {
        return _listaMisseis;
    }
    
    /**Retorn o nivel da partida
     * 
     * @return String : _nivelPartida
     */
    public String getNivelPartida(){
        return _nivelPartida;
    }

    /**
     * Recebe um objeto Satelite.
     *
     * @param  ElementoDTO : satelite
     */
    public void setSatelite(SateliteDTO satelite)
    {
        _satelite = satelite;
    }

    /**
     * Recebe um objeto Planeta.
     *
     * @param  ElementoDTO : planeta
     */
    public void setPlaneta(ElementoDTO planeta)
    {
        _planeta = planeta;
    }

    /**
     * Recebe um objeto missil.
     *
     * @param  ElementoDTO : missel
     */
    public void setMissil(ElementoDTO missil)
    {
        _missil = missil;
    }

    /**
     * Recebe e mantém a lista de meteoros.
     *
     * @param  ListaMeteoros : Lista de Meteoros
     */
    public void setListaMeteoros(ListaMeteoros listaMeteoros)
    {
        _listaMeteoros = listaMeteoros;
    }

    /**
     * Recebe e mantém a lista de mísseis.
     *
     * @param  ArrayList - listaMisseis: Lista de mísseis
     */
    public void setListaMisseis(ArrayList listaMisseis)
    {
        _listaMisseis = listaMisseis;
    }

    /**
     * Recebe e um novo valor de escore.
     *
     * @param  int - escore: Novo valor de escore
     */
    public void setEscore(int escore)
    {
        _escore = escore;
    }

    /**
     * Recebe e um novo valor de fase.
     *
     * @param  int - fase: Novo valor de fase
     */
    public void setFase(int fase)
    {
        _fase = fase;
    }

    /**
     * Recebe e um novo valor de chances de jogo.
     *
     * @param  int - escore: Novo valor de fase
     */
    public void setChances(int chances)
    {
        _chancesJogo = chances;
    }
    
    public void setNivelPartida(int fase){
        if(fase < 50)
            _nivelPartida = "Principiante";
        else{
            if(fase < 100)
                _nivelPartida = "Intermediario";
            else
                _nivelPartida = "Avançado";
        }
    }
    
} // fim classe
